//JavaScript 核心扩展

//---------------------------------------------------  
// 日期格式化  
// 格式 YYYY/yyyy/YY/yy 表示年份  
// MM/M 月份  
// W/w 星期  
// dd/DD/d/D 日期  
// hh/HH/h/H 时间  
// mm/m 分钟  
// ss/SS/s/S 秒  
//---------------------------------------------------  
Date.prototype.format = function(formatStr)   
{   
    var str = formatStr;   
    var Week = ['日','一','二','三','四','五','六'];  
  
    str=str.replace(/yyyy|YYYY/,this.getFullYear());   
    str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));   
  
    str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());   
    str=str.replace(/M/g,this.getMonth());   
  
    str=str.replace(/w|W/g,Week[this.getDay()]);   
  
    str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());   
    str=str.replace(/d|D/g,this.getDate());   
  
    str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());   
    str=str.replace(/h|H/g,this.getHours());   
    str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());   
    str=str.replace(/m/g,this.getMinutes());   
  
    str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());   
    str=str.replace(/s|S/g,this.getSeconds());   
  
    return str;   
}   

//模板转换函数 
//作用: 将json对象按模板格式化
//参数: 
//obj: JSON 对象
//返回值: 格式化结果
String.prototype.render = function(obj) {
 return this.replace(/\$\{\w+\}/gi, function(matchs) {
     var returns = obj[matchs.replace(/\$|\{|\}/g, "")];		
     return (returns + "") == "undefined"? "": returns;
 });
};

String.prototype.renderArray = function(obj) {
	var result="";
 for(i=0; i< obj.length; i++)
	{
		result += this.render(obj[i]);
	}
	return result;
};

Array.prototype.selectOne = function(key,value) {
	for(var i=0; i<this.length; i++){
		if(this[i] && this[i][key] == value)
		{
			return this[i];
		}
	}
	return null;
};

Array.prototype.remove = function(key,value) {
	for(var i=0; i<this.length; i++){
		if(this[i] && this[i][key] == value)
		{
			delete this[i];
		}
	}
};

//getFields
//作用: 获取数组中所有元素的某个字段
//参数: 
//key:  字段名
//返回值: 字段值,以逗号分隔
Array.prototype.getFields = function(key) {
	var result="";
	for(var i=0; i<this.length; i++){
		if(this[i] && this[i][key])
		{
			result = result + this[i][key] + ",";
		}
	}
	
	if(result !="" && result[result.length-1]==','){
		result = result.substring(0, result.length-1);
	}
	
	return result;
};

//getPageQueryString
//作用: 获取页面查询参数  xxx?aa=22&bb=33
//参数: 
//name: 参数名
//返回值: 参数值
function getPageQueryString(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
	var r = window.location.search.substr(1).match(reg);
	if (r != null) return unescape(r[2]); return null;
}